package coms.process;

import java.util.Map;
import org.json.JSONArray;
import org.json.JSONObject;
import org.slf4j.LoggerFactory;
import com.crc.mam.BaseCase;
import coms.AutoException;
import coms.Constants;
import coms.TestDateString;
import frame.FrameWork;
import frame.InterTest;
import functions.ems_accountant_job_pool.AccountantCalendar;
import functions.mams_rest.Org;

/**
 * 增加工作日历，保证上班时间
 * @author CHENHAILIAN6
 *
 */
public class AccountantCalendarProcess extends BaseCase implements InterTest {
  private org.slf4j.Logger logger = LoggerFactory.getLogger(AccountantCalendarProcess.class);
  

  /**
   * 入参workDate，workFlag
   * 
   */
  @Override
  public void run(Map<Object, Object> paramMap) {
    String baseUrl = (String) paramMap.get("baseUrl");
    if(baseUrl !=null) {
      FrameWork.setBaseUrl(baseUrl);
    }
      
    LoginTest loginTest = new LoginTest();
      loginTest.run(paramMap);
      if(!loginTest.status) {
        remark = loginTest.result;
        status = false;
        throw new AutoException("登录失败，阻碍测试");
      }
    boolean isWorkDay = TestDateString.isTodayWorkDay();
    AccountantCalendar calendar = new AccountantCalendar();
    JSONArray resultJSONArray = calendar.findAllAccountantCalendar();
    String today = TestDateString.today();
    boolean hasRecord = false;
    boolean recordIsWorkDay = false;
    if(resultJSONArray == null || resultJSONArray.length() <1) {
      
    }else {
      for(int i=0;i<resultJSONArray.length();i++) {
        JSONObject object = (JSONObject) resultJSONArray.get(i);
        if(object.getString("workDate").equals(today)) {
          hasRecord = true;
          if(object.get("workFlag") !=null && object.get("workFlag").toString().equals("1")) {
            recordIsWorkDay = true;
          }else if(object.get("workFlag") !=null && object.get("workFlag").toString().equals("0")){
            recordIsWorkDay = false;
          }
        }
      }
    }
     /**
      * 如果是工作日  + 无记录 ===》设置时间 从"00:00-12:59" ,"13:00-23:59"
      * 如果是工作日 + 有记录 + 是工作日  === 》设置时间 从"00:00-12:59" ,"13:00-23:59"
      * 如果是工作日 + 有记录 + 非工作日   === 》 1. 设置为工作日 ; 2.设置时间 从"00:00-12:59" ,"13:00-23:59"
      * 如果是非工作日 + 无记录  ==》1. 设置为工作日 ; 2.设置时间 从"00:00-12:59" ,"13:00-23:59"
      * 如果是非工作日 + 有记录 + 是工作日 ==》设置时间 从"00:00-12:59" ,"13:00-23:59"
      * 如果是非工作日 + 有记录 + 非工作日 ==》1. 设置为工作日 ; 2.设置时间 从"00:00-12:59" ,"13:00-23:59"
      */
    String workStime = "00:01";
    String workEtime = "12:59";
    String workStime2 = "13:00";
    String workEtime2 = "23:59";
    
    if(isWorkDay && (!hasRecord)) {
      //无需操作
      logger.info("日历上是工作日，且无记录，只需改工作时间");
      calendar.setAccountantCalendarAllWorkTime(today, workStime, workStime2, workEtime, workEtime2);
    }else if(isWorkDay && hasRecord && recordIsWorkDay) {
      //设置时间 从"00:00-12:59" ,"13:00-23:59"
      logger.info("日历上是工作日，有记录，并且记录是工作日，只需要改时间");
      calendar.setAccountantCalendarAllWorkTime(today, workStime, workStime2, workEtime, workEtime2);
    }else if(isWorkDay && hasRecord && (!recordIsWorkDay)) {
     //1. 设置为工作日 ; 2.设置时间 从"00:00-12:59" ,"13:00-23:59"
      logger.info("如果是工作日 + 有记录 + 非工作日   === 》 1. 设置为工作日 ; 2.设置时间 从\"00:00-12:59\" ,\"13:00-23:59\"");
      calendar.setAccountantCalendarWorkFlag(today, "1");
      calendar.setAccountantCalendarAllWorkTime(today, workStime, workStime2, workEtime, workEtime2);
    }else if((!isWorkDay) && (!hasRecord)) {
      logger.info("如果是非工作日 + 无记录  ==》1. 设置为工作日 ; 2.设置时间 从\"00:00-12:59\" ,\"13:00-23:59\"");
      //1. 设置为工作日 ; 2.设置时间 从"00:00-12:59" ,"13:00-23:59"
      calendar.setAccountantCalendarWorkFlag(today, "1");
      calendar.setAccountantCalendarAllWorkTime(today, workStime, workStime2, workEtime, workEtime2);
    }else if((!isWorkDay) && hasRecord  && recordIsWorkDay) {
      //设置时间 从"00:00-12:59" ,"13:00-23:59"
      logger.info("如果是非工作日 + 有记录 + 是工作日 ==》设置时间 从\"00:00-12:59\" ,\"13:00-23:59\"");
      calendar.setAccountantCalendarAllWorkTime(today, workStime, workStime2, workEtime, workEtime2);
    }else if((!isWorkDay) && hasRecord && (!recordIsWorkDay)) {
      logger.info("如果是非工作日 + 有记录 + 非工作日 ==》1. 设置为工作日 ; 2.设置时间 从\"00:00-12:59\" ,\"13:00-23:59\"");
      //1. 设置为工作日 ; 2.设置时间 从"00:00-12:59" ,"13:00-23:59"
      calendar.setAccountantCalendarWorkFlag(today, "1");
      calendar.setAccountantCalendarAllWorkTime(today, workStime, workStime2, workEtime, workEtime2);
    }
    if(!calendar.status) {
      status = false;
      remark = calendar.getResult();
     
    }else {
      status = true;  
    }
  }


  @Override
  public boolean getStatus() {
    // TODO Auto-generated method stub
    return false;
  }

 
  
}
